package com.example.administrator.smarthome_androids;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import com.com.sky.downloader.greendao.OpenBeanDao;

import org.greenrobot.greendao.database.Database;
import org.greenrobot.greendao.query.QueryBuilder;

import java.util.List;

/**
 * 数据库增删改查的部分方法
 * Created by Administrator on 2017/6/16 0016.
 */
public class DBUtils {
    /**
     * 添加数据至数据库
     *
     * @param context
     * @param  openBean
     */
    public static void insertData(Context context, OpenBean openBean) {

       DBManager.getDaoSession(context).getOpenBeanDao().insert(openBean);
    }

    /**
     * 将数据实体通过事务添加至数据库
     *
     * @param context
     * @param list
     */
    public static void insertData(Context context, List<OpenBean> list) {
        if (null == list || list.size() <= 0) {
            return;
        }
        DBManager.getDaoSession(context).getOpenBeanDao().insertInTx(list);
    }



    /**
     * 删除数据至数据库
     *
     * @param context
     * @param openBean 删除具体内容
     */
    public static void deleteData(Context context, OpenBean openBean) {
       DBManager.getDaoSession(context).getOpenBeanDao().delete(openBean);
    }

    /**
     * 根据id删除数据至数据库
     *
     * @param context
     * @param id      删除具体内容
     */
    public static void deleteByKeyData(Context context, long id) {
        DBManager.getDaoSession(context).getOpenBeanDao().deleteByKey(id);
    }

    /**
     * 删除全部数据
     *
     * @param context
     */
    public static void deleteAllData(Context context) {
      DBManager.getDaoSession(context).getOpenBeanDao().deleteAll();
    }

    /**
     * 更新数据库
     *
     * @param context
     * @param openBean
     */
    public static void updateData(Context context, OpenBean openBean) {
       DBManager.getDaoSession(context).getOpenBeanDao().update(openBean);
    }

    /**
     * 查询所有数据
     *
     * @param context
     * @return
     */
    public static List<OpenBean> queryAll(Context context) {
        QueryBuilder<OpenBean> builder = DBManager.getDaoSession(context).getOpenBeanDao().queryBuilder();

        return builder.build().list();
    }

    /**
     * 根据id，其他的字段类似
     *
     * @param context
     * @param id
     * @return
     */
    public static List<OpenBean> queryForId(Context context, long id) {
        QueryBuilder<OpenBean> builder = DBManager.getDaoSession(context).getOpenBeanDao().queryBuilder();
        /**
         * 返回当前id的数据集合,当然where(这里面可以有多组，做为条件);
         * 这里build.list()；与where(StudentDao.Properties.Id.eq(id)).list()结果是一样的；
         * 在QueryBuilder类中list()方法return build().list();
         *
         */
        // Query<Student> build = builder.where(StudentDao.Properties.Id.eq(id)).build();
        // List<Student> list = build.list();
        return builder.where(OpenBeanDao.Properties.Id.eq(id)).list();
    }
    /**
     * 根据字符串模糊查询
     *
     * @param context
     * @param mstr
     * @return
     */

    public static List<OpenBean> queryByStr(Context context, String mstr) {
        QueryBuilder<OpenBean> builder = DBManager.getDaoSession(context).getOpenBeanDao().queryBuilder();


        return builder.where(OpenBeanDao.Properties.MString.like("%"+mstr+"%")).list();
    }


}
